package offer;

import java.util.HashMap;
import java.util.Map;

/**
 * @Auther ZhanBo
 * @Date 2020/5/20
 */
public class Solution50 {

    public static void main(String[] args) {
        String s ="aadadaad";
        System.out.println(Solution50.fristUniqChar(s));
    }


    public static char firstUniqChar(String s) {
        char result = ' ';
        if(s.length()==1)
            result = s.charAt(0);
        char [] chars = s.toCharArray();
        for (int i = 0 ; i< chars.length ;i++) {
            if(result!=' ')
                break;
            for (int j = i + 1; j < chars.length; j++) {
                if (chars[i] != chars[j]) {
                    if (j == chars.length - 1)
                        result = chars[i];
                } else
                    break;
            }
        }
        return result;
    }

    /**
     *一个字母出现的次数大于 1 次就不符合要求了，这个时候使用 Fasle 标记状态相对于 Integer 的不断递增更合理，也更省空间。
     *
     * 布尔值可以用来判断，可以简化代码逻辑。
     * @param s
     * @return
     */
    private static char fristUniqChar(String s){
        Map<Character, Boolean> dic = new HashMap<>();
        char[] array = s.toCharArray();
        for (char c : array) {
            dic.put(c, !dic.containsKey(c));
        }
        for (char c : array) {
            if (dic.get(c)) return c;
        }
        return ' ';
    }
}
